1. Field of the Invention
This invention relates generally to computers using switched fabrics, and more particularly to input/output (I/O) protocols to facilitate the booting of computers from a logically remote source.
2. Description of the Related Art
Today""s computers are moving towards becoming more interactive with other computers in a networking environment. This includes the ability for computers to communicate with other computers on a given network. As computers communicate, they are able to access files located on different computers. For example, using a well known networking transports such as Ethernet, one computer is able to access files stored on drives of other computers. Such drives have interfaces such as small computer system interface (SCSI) hard drives, IDE hard drives, SCSI or IDE optical disc drives (e.g., CDs, CD-Rs, CD-R/W, and DVDs), etc.
However, in order for a computer to access a network and other computers also connected to the network, the computer must first boot up. The computer typically boots up using hardware exclusive to that particular computer. Typically, a computer boots up by using a peripheral device connected to that computer. The peripheral device interfaces with the computer through connectors on the motherboard or through a host adapter. Most commonly, host adapters are internal to the computer and connect to the computer with a peripheral component interconnect (PCI) bus. Therefore, peripheral devices must communicate through a PCI bus before access is made to a computer""s main memory (e.g., RAM). As such, use of the PCI bus can increase processing time since the PCI bus is a shared bus and necessarily prevents direct communication with the main memory of the computer. Unfortunately, this architecture is an industry standard that limits higher performance.
Host adapters (e.g., network interface cards xe2x80x9cNICsxe2x80x9d) also allow the computer to interface with local area networks (LANs). The NICs can implement different types of network technologies such as Ethernet, ATM, Fibre Channel, and the like. Through the local area networks, computers are able to communicate with other computers and some shared peripheral devices, such as a server""s hard drive. As such, all communication with other computers and the peripheral devices of other computers must be done through a computer having a suitable NIC. In a typical data exchange, the data at the source must travel over the drive""s interface, through the internal PCI bus into memory, through the PCI bus again, through the NIC, over the network physical medium, and through the NIC and PCI bus of the receiving computer before communication can be established with the retrieving computer""s main memory.
In a typical computing environment, each operating system (OS) will require its own hardware to operate and run applications specific to that operating system. For example, some computers may use the UNIX(trademark) OS to run UNIX(trademark) applications, the Sun Microsystems Inc. Solaris(trademark) OS to run Solaris(trademark) applications, and so on. In this situation, a user operating a computer using the Solaris(trademark) OS will not generally be able to run Windows(trademark) OS based applications. One way for the user to run a Windows(trademark) application is to have a separate bootable Windows(trademark) image on the same hard drive or have another dedicated drive connected to the local computer over the PCI bus to run the Windows(trademark) OS. This is provided the native system BIOS or other boot ROM executable allows such boot ups. This is because some system BIOS chips only enable boot ups to certain types of OS""s. As can be appreciated, this introduces substantial increases in cost since the user will have to obtain larger storage drives, purchase separate OS software and applications from different venders and so on.
Another way to provide a user the ability to run another OS is to use what is called xe2x80x9ctrivial file transfer protocol (TFTP).xe2x80x9d Using TFTP, a user of a local computer can communicate with a remote computer which may have a desired boot OS image stored on its local storage (i.e., a drive connected to the remote computer). However, in order to facilitate an TFTP transfer, the computer requesting the information must use the computing and processing power of the remote computer in order to gain access to the desired OS image. In addition, the requesting computer may not communicate directly with the memory of the remote computer, but must transfer files by way of the remote computer""s PCI bus and then to the remote computer""s storage. Once this type of communication is established and access is made to the desired bootable OS image, the requesting computer will necessarily rely on the processing power of the remote computer. Thus, if the remote computer is not ON, not booted, or if it fails in any way, the TFTP communication will be lost, along with the ability to boot from the remote host.
In view of the foregoing, there is a need to allow computers to efficiently operate and gain access to a variety of operating systems, the capability of sharing networked devices to boot from, and use operating systems stored on the networked devices as well as to run applications.
Broadly speaking, the present invention fills the aforementioned needs by providing methods and apparatus for booting a computer system from boot images stored in logically remote storage over a network. It should be appreciated that the present invention can be implemented in numerous ways, including as a process, an apparatus, a system, a device, a method, or a computer readable media. Several embodiments of the present invention are described below.
In one embodiment, a method for automatically booting a computer from a remote source is disclosed. The method includes validating end nodes (e.g., discovery of end nodes) that are logically remote from the computer and communicating with a validated end node that is logically remote from the computer. After the computer communicates with the validated end node, a determination is made as to whether the validated end node (e.g., storage connected to the end node) has a desired boot image to boot the computer. If the desired boot image is present, the computer is booted using this desired boot image obtained from the validated end node without processing assistance of a remote computer. In a preferred implementation, the end node can be located anywhere on a network (e.g., either physically near the host computer or at a remote location). All end nodes are logically remote.
In another embodiment, a method for manually booting a computer from a remote source is disclosed. A boot select option ROM (BSOR) is accessed, wherein the BSOR allows the computer to boot from a logically remote end node or from the computer""s local storage medium (e.g., connected by way of a PCI/SCSI bus). When a user elects to boot from a logically remote end node, the method proceeds to validate logically remote end nodes and does not use the host computer""s native BIOS/ROM chip. Once the method validates logically remote end nodes, the method determines what boot images connected to the end nodes of the network are available to boot the computer. A specified boot image is then uploaded from the validated logically remote end node and a microprocessor of the computer boots the computer using the boot image form the validated logically remote end node.
In still a further embodiment, a method for booting a computer from a remote source is disclosed. Logically remote end nodes on a network are first validated before the method communicates with the validated logically remote end nodes. The method then ascertains (e.g., by proxy agent or the like) what boot images are available on the validated logically remote end nodes. Once the available boot images are ascertained, the method uploads an ascertained boot image from a validated logically remote end node to boot the computer. The computer then boots with its own microprocessor using the boot image uploaded from the validated logically remote end node without the assistance of a remote computer.
The advantages of the present invention are numerous. Most notably, the embodiments of the invention allow a user to search for logically remote end nodes on a network and determine what end nodes contain boot images capable of booting the user""s computer. The booting can thus occur off any number of different operating systems. In the prior art, it was not possible to boot a local computer from remotely located storage without the processing power of a remote computer. Instead, the most common environment is to have each computer boot from its own hard drive or drives prior to accessing the peripheral devices of another computer located on a network. This increases both the size and cost of user computer systems which desire to have access to and boot from multiple boot images.